/************************************************************************************************
This file is a part of libfizzix backend to the Fizzix project.
The website for this project is http://code.google.com/p/fizzix .
Copyright (C) 2009
	Joseph Lynch
	Anton Frolenkov
	Purnima Balakrishnan
	Daniel Stiles
	Eric Van Albert

This program is free software; you can redistribute it and/or 
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
************************************************************************************************/

#ifndef FIZFORMGET_H
#define FIZFORMGET_H

#include <vector>
#include <stack>
#include <string>

#include "fizformnode.h"

// This class provides a template for "getter" nodes. These nodes retrieve information from the engine, such as named constants or forces. This class is abstract, and is subclassed by getconst, getmacro, getforce, and getprop.
class FizFormGet : public FizFormNode
{
	protected:
		std::string identifier; // Name of thing to get
	public:
		FizFormGet();
		FizFormGet(std::string id);
		virtual const fizdatum eval(fizstack &stack, const FizObject &obj1, const triangle &tri1, const FizObject &obj2, const triangle &tri2); /* Returns the value of whatever it has been told to get */
};

#endif
